
#ifndef SX_TIMELINE_H
#define SX_TIMELINE_H

namespace Sx {
namespace Multimedia {

/* 
 * The time-line interface provides the basic functions that are required for
 * interacting with a finite measure of time along a number line. The time-line
 * contains only positive numbers and is defined on the interval (0, end).
 *
 * The current position in the time-line is simply notified as a single point
 * in time. The illustration below illustrates this simple time-line:
 *
 * |-----------------o------------------|
 * 0                cur                end
 *
 * The current time should be checked to ensure that it is between 0 and the
 * end of the time-line.
 */
template <typename Real>
class Timeline {
public:
	virtual bool setCurrentTime(Real time) = 0;
	virtual bool setEndTime(Real end) = 0;
	virtual bool incrementTime() = 0;
	virtual bool decrementTime() = 0;
	virtual Real getCurrentTime() const = 0;
	virtual Real getEndTime() const = 0;

};

}

}

#endif
